
class CCShakyTiles3D : public CCTiledGrid3DAction
{
    static CCShakyTiles3D* actionWithRange(int nRange, bool bShakeZ, ccGridSize gridSize,
        ccTime duration);
};

class CCShatteredTiles3D : public CCTiledGrid3DAction
{
    static CCShatteredTiles3D* actionWithRange(int nRange, bool bShatterZ, ccGridSize gridSize,
        ccTime duration);
};

class CCShuffleTiles : public CCTiledGrid3DAction
{
    void shuffle(int *pArray, unsigned int nLen);
    ccGridSize getDelta(ccGridSize pos);
    void placeTile(ccGridSize pos, Tile *t);
    static CCShuffleTiles* actionWithSeed(int s, ccGridSize gridSize, ccTime duration);
};

class CCFadeOutTRTiles : public CCTiledGrid3DAction
{
    void turnOnTile(ccGridSize pos);
    void turnOffTile(ccGridSize pos);
    static CCFadeOutTRTiles* actionWithSize(ccGridSize gridSize, ccTime time);
};

class CCFadeOutBLTiles : public CCFadeOutTRTiles
{
    static CCFadeOutBLTiles* actionWithSize(ccGridSize gridSize, ccTime time);
};

class CCFadeOutUpTiles : public CCFadeOutTRTiles
{
    static CCFadeOutUpTiles* actionWithSize(ccGridSize gridSize, ccTime time);
};

class CCFadeOutDownTiles : public CCFadeOutUpTiles
{
    static CCFadeOutDownTiles* actionWithSize(ccGridSize gridSize, ccTime time);
};

class CCTurnOffTiles : public CCTiledGrid3DAction
{
    void shuffle(int *pArray, unsigned int nLen);
    void turnOnTile(ccGridSize pos);
    void turnOffTile(ccGridSize pos);
    static CCTurnOffTiles* actionWithSize(ccGridSize size, ccTime d);
    static CCTurnOffTiles* actionWithSeed(int s, ccGridSize gridSize, ccTime duration);
};

class CCWavesTiles3D : public CCTiledGrid3DAction
{
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);
    static CCWavesTiles3D* actionWithWaves(int wav, float amp, ccGridSize gridSize, ccTime duration);
};

class CCJumpTiles3D : public CCTiledGrid3DAction
{
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);
    static CCJumpTiles3D* actionWithJumps(int j, float amp, ccGridSize gridSize, ccTime duration);
};

class CCSplitRows : public CCTiledGrid3DAction
{
    static CCSplitRows* actionWithRows(int nRows, ccTime duration);
};

class CCSplitCols : public CCTiledGrid3DAction
{
    static CCSplitCols* actionWithCols(int nCols, ccTime duration);
};
